home *** CD-ROM | disk | FTP | other *** search
- #ifndef _CACHE
- #define _CACHE
-
- struct cache_block
- {
- struct cache_block *next;
- unsigned short sector;
- unsigned char drive;
- unsigned char status;
- unsigned char data[1];
- };
-
- struct cache
- {
- unsigned short error_sector;
- unsigned short error_drive;
- unsigned short sector_size;
- unsigned (*drive_access)(int, unsigned, unsigned, void *);
- struct cache_block *first;
- struct cache_block *last;
- };
-
- #define CACHE_FLUSH (1<<0)
- #define CACHE_CLEAR (1<<1)
-
- struct cache *cache_initialize(unsigned (*)(int, unsigned, unsigned, void *),
- unsigned, unsigned);
- unsigned cache_access(struct cache *, int, unsigned, unsigned, void *);
- unsigned cache_flush_and_or_clear(struct cache *, int, int);
- void cache_free(struct cache *);
-
- #define cache_flush(q,d) cache_flush_and_or_clear(q,d,CACHE_FLUSH)
- #define cache_clear(q,d) cache_flush_and_or_clear(q,d,CACHE_CLEAR)
- #define cache_flush_and_clear(q,d) \
- cache_flush_and_or_clear(q,d,CACHE_FLUSH+CACHE_CLEAR)
-
- #endif
-
-